package br.com.tcm.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.tcm.entity.Empresa;

public class EmpresaDAO {

	private Connection con = null;
	
	public EmpresaDAO() {
		this.con = new ConnectionFactory().getConnection(); 
	}
	
	public void insertEmpresa(Empresa empresa) {
        try {
            String sql = "insert into empresa (nmEmpresa) values (?)";
            PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, empresa.getNmEmpresa());
            pst.execute();
            pst.close();
            System.out.println("Empresa Gravado.");
        } catch (SQLException e) {
            throw new RuntimeException("Erro ao inserir empresa.");
        }
    }
    
    public void updateEmpresa(Empresa empresa) {
    	try {
			String sql = "update empresa set nmEmpresa = ? where idEmpresa = ?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setString(1, empresa.getNmEmpresa());
			pst.setInt(2, empresa.getIdEmpresa());
			pst.execute();
			pst.close();
			System.out.println("Empresa Atualizado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao fazer update na empresa.");
		}
    }
    
    public void deleteEmpresa(Empresa empresa) {
    	try {
			String sql = "delete from empresa where idEmpresa = ?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setInt(1, empresa.getIdEmpresa());
			pst.execute();
			pst.close();
			System.out.println("Empresa Apagado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao apagar a empresa.");
		}
    }
    
    public List<Empresa> findAll() {
    	List<Empresa> empresaList = new ArrayList<Empresa>();
    	try {
			String sql = "select * from empresa";
			PreparedStatement pst = con.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			while (rs.next()) {
				Empresa empresa = new Empresa();
				empresa.setIdEmpresa(rs.getInt("idEmpresa"));
				empresa.setNmEmpresa(rs.getString("nmEmpresa"));
				empresaList.add(empresa);
			}
			pst.close();
			System.out.println("Empresa listada com sucesso.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao listar a empresa.");
		}
    	
    	return empresaList;
    }
	
}
